package com.ea.common.utils;

import com.ea.common.result.BizException;
import com.ea.common.result.ErrorCode;

import java.util.Calendar;
import java.util.Date;

public class AgeUtils {

    public static int getAge(Date birthDay) {

        try {

            Calendar cal = Calendar.getInstance();
            if (cal.before(birthDay)) { //出生日期晚于当前时间，无法计算
                throw new BizException(ErrorCode.SYSTEM_RESOURCE_ERROR);
            }
            int yearNow = cal.get(Calendar.YEAR);  //当前年份
            int monthNow = cal.get(Calendar.MONTH);  //当前月份
            int dayOfMonthNow = cal.get(Calendar.DAY_OF_MONTH); //当前日期
            cal.setTime(birthDay);
            int yearBirth = cal.get(Calendar.YEAR);
            int monthBirth = cal.get(Calendar.MONTH);
            int dayOfMonthBirth = cal.get(Calendar.DAY_OF_MONTH);
            int age = yearNow - yearBirth;   //计算整岁数
            if (monthNow <= monthBirth) {
                if (monthNow == monthBirth) {
                    if (dayOfMonthNow < dayOfMonthBirth) age--;//当前日期在生日之前，年龄减一
                } else {
                    age--;//当前月份在生日之前，年龄减一
                }
            }
            return age;
        } catch (Exception e) {
            throw new BizException(ErrorCode.SYSTEM_RESOURCE_ERROR);
        }
    }
}

